package com.uoko.plugins.mybatis.common;

import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.Version;
import com.baomidou.mybatisplus.enums.IdType;

import java.io.Serializable;

/**
 * mybatis plus  Entity父类
 * <p>
 * <p>
 * IdType.AUTO	数据库ID自增
 * IdType.INPUT	用户输入ID
 * IdType.ID_WORKER	全局唯一ID，内容为空自动填充（默认配置）
 * IdType.UUID	全局唯一ID，内容为空自动填充
 *
 * @author shaohua
 * Email shaohua@uoko.com
 * created by 2018/6/4
 */
public class SuperEntity<T extends Model> extends Model<T> {
    /**
     * 主键ID , （主键） 生成uuid
     */
    @TableId(value = "ID", type = IdType.UUID)
    private String id;
    /**
     * 当要更新一条记录的时候，希望这条记录没有被别人更新
     * <p>
     * 乐观锁实现方式：
     * <p>
     * 取出记录时，获取当前version
     * 更新时，带上这个version
     * 执行更新时， set version = yourVersion+1 where version = yourVersion
     * 如果version不对，就更新失败
     */
    @Version
    @TableId("version")
    private Long version;


    @Override
    protected Serializable pkVal() {
        return null;
    }


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Long getVersion() {
        return version;
    }

    public void setVersion(Long version) {
        this.version = version;
    }
}
